package com.jrx.anytxn.param.service.product;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.product.PrPenaltyRateTableReq;
import com.jrx.anytxn.param.dto.product.PrPenaltyRateTableRes;
import com.jrx.anytxn.param.entity.PrPenaltyRateTable;

import java.math.BigDecimal;

/**
 * 罚息利率表表 业务接口
 *
 * @author yx
 * @date 2019/4/30
 */
public interface IPrPenaltyRateTableService {


    /**
     * 根据租户Id分页查询罚息利率表参数信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户Id
     * @return com.jrx.anytxn.common.data.TxnPage<com.jrx.anytxn.param.dto.product.PrPenaltyRateTableRes>
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:30
     */
    TxnPage<PrPenaltyRateTableRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId) throws TxnException;


    /**
     * 添加罚息利率表参数
     *
     * @param prPenaltyRateTableReq 罚息利率请求实体
     * @return com.jrx.anytxn.param.dto.product.PrPenaltyRateTableRes
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:31
     */
    PrPenaltyRateTableRes addPenaltyRateTable(PrPenaltyRateTableReq prPenaltyRateTableReq) throws TxnException;


    /**
     * 更新罚息利率表参数
     *
     * @param prPenaltyRateTableReq 罚息利率请求实体
     * @return com.jrx.anytxn.param.dto.product.PrPenaltyRateTableRes
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:32
     */
    PrPenaltyRateTableRes modifyPenaltyRateTable(PrPenaltyRateTableReq prPenaltyRateTableReq) throws TxnException;

    /**
     * 通过租户ID和罚息利率表ID删除罚息利率表参数
     *
     * @param tenantId  租户Id
     * @param penaltyId 罚息利率表ID
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:38
     */
    Boolean removeByTenIdAndPenaltyId(String tenantId, String penaltyId) throws TxnException;

    /**
     * 通过租户ID和罚息利率表ID查询罚息利率表参数
     *
     * @param tenantId  租户ID
     * @param penaltyId 罚息利率表ID
     * @return com.jrx.anytxn.param.dto.product.PrPenaltyRateTableRes
     * @author fan.yang
     * date: 2019/10/14 0014 下午 14:26
     */
    PrPenaltyRateTableRes findByTenIdAndPanaltyId(String tenantId, String penaltyId) throws TxnException;

    /**
     * 通过罚息利率ID及机构ID获取费用信息
     * @param penaltyId
     * @param  orgId
     * @return: PrPenaltyRateTable
     **/
    PrPenaltyRateTable findByPenaltyId(String penaltyId, String orgId, String tenantId);

    /**
     * 获取罚息日利率
     * @param dailyRate
     * @param penaltyRateTable
     * @return
     */
    BigDecimal getPenaltyDailyRate(BigDecimal dailyRate, PrPenaltyRateTable penaltyRateTable);
}
